# -*- encoding: utf-8 -*-
#import resource
#import hr

from osv import fields,osv
from tools.translate import _

class vt_location (osv.osv):
    _name = 'vt_location'
    _description = 'Địa điểm du lịch'
    _columns = {
            'name':fields.char('Tên địa điểm',size=100,required="True"),
            'location_id':fields.integer('Mã địa điểm',size=100,required="True"),
            'location_description':fields.char('Mô tả địa điểm du lịch',size=100,required="False"),
            #'location_image':fields.binary('Hình ảnh địa điểm',size=100,required="False"),
            'location_country':fields.selection([('vietnam','Việt Nam'),('thailand','Thái Lan')],'Quốc gia',required="True"),                                  
            }
vt_location()

class vt_hotel(osv.osv):
    _name = 'vt_hotel'
    _inherit = 'res.partner'
    _table = 'vt_hotel'
    _columns = {
        'phone':fields.char('Số Điện Thoại ',size=100),
        'quality':fields.selection([('1 Sao','1 Sao'),('2 Sao','2 Sao'),('3 Sao','3 Sao'),('4 Sao','4 Sao'),('5 Sao','5 Sao'),], 'Loại Khách Sạn'),                        
        'list_rooms': fields.one2many('vt_room', 'hotel_id', 'Danh Sách Phòng'),
        #'list_rooms':fields.many2many('vt_roomtype','vt_hotel_roomtype','hotel_id','roomtype_id','Các loại dịch vụ phòng'),
    }
vt_hotel()

class vt_tour (osv.osv):
    _name = 'vt_tour'
    _description = 'Tour du lich'
    _columns = {
            'tour_id':fields.char('Mã Tour',size=64,readonly="true"),
            'name':fields.char('Tên Tour',size=100),
            'list_locations':fields.many2many('vt_location','vt_tour_location','tour_id','location_id','list of location'),
            'list_hotels':fields.many2many('vt_hotel','vt_tour_hotel','tour_id','hotel_id','tour hotel'),
            'tour_description':fields.char('Mô tả Tour', size=100),
            'tour_status':fields.boolean('Trạng thái'),
            'day_nums':fields.integer('Số ngày'),
            'parent_id': fields.many2one('vt_tour','Parent Tour'),
            'list_childs': fields.one2many('vt_tour','parent_id', 'Partner Ref.'),
            'list_toursale':fields.one2many('vt_toursale', 'tour_id', 'Tour sale list'),
            'tour_type':fields.selection([('vietnam','Việt Nam'),('nuocngoai','Nước Ngoài')],'Loại Tour Du Lịch',required="true"),            
            }
    def create(self,cr,uid,values,context):
        cr.execute('select max(id) from vt_tour')
        id=cr.fetchone()[0]
    #    raise osv.except_osv((''),(str(str(id))))
        ma_moi='T-'+str(id)
        values.update({'tour_id':str(ma_moi)})
        return super(vt_tour,self).create(cr,uid,values,context=context)
vt_tour()
    
class vt_room (osv.osv):
    _name = 'vt_room'
    _description = 'Thông Tin Phòng'
    #_inherit = 'product.product'
    _table = 'vt_room'
    _columns = {            
            'name':fields.char('Tên phòng',size=100),
            'nums_twin_bed':fields.integer('Số Giường Đôi',size=100),
            'nums_single_bed':fields.integer('Số Giường Đơn',size=100),
            'nums_baby_bed':fields.integer('Số Giường Trẻ Em',size=100),
            'bathtub':fields.boolean('Bồn Tắm'),
            'view': fields.selection([('sea','Sea'),('street','Street')], 'Room View'),
            'hotel_id': fields.many2one('vt_hotel', 'Hostel'),
            'trangthai': fields.selection([('controng','Đang mở Tour cho khách hàng đăng ký')
                                        ,('dathue','Kết thúc đăng ký (Giai đoạn chuẩn bị cho khởi hành)')
                                        ],'Tình trạng phòng',readonly=True)
            }
    def create(self,cr,uid,values,context):
        cr.execute('select max(id) from vt_room')
        id=cr.fetchone()[0]
    #    raise osv.except_osv((''),(str(str(id))))
        ma_moi='room-'+str(id)
        values.update({'name':str(ma_moi)})
        values.update({'trangthai':'controng'})
        return super(vt_room,self).create(cr,uid,values,context=context)
vt_room()

class vt_tourguide(osv.osv):
    _name = 'hr.employee'
    _inherit = 'hr.employee'
    #_table = 'res_partner'
    _columns = {
        'tourguide': fields.boolean('Tour guide'),
    }
vt_tourguide()

class vt_tranform(osv.osv):
    _name = 'vt_tranform'
    _inherit = 'res.partner'
    _table = 'vt_tranform'
    _columns = {
        'phone':fields.char('Số Điện Thoại ',size=100),
        'list_cars': fields.one2many('vt_car','car_id','Thông Tin Vận Chuyển'),
    }
vt_tranform()

class vt_car (osv.osv):
    _name = 'vt_car'
    _description = 'Thông Tin Xe'
    _inherit = 'product.product'
    _table = 'product_product'
    _columns = {
           # 'name':fields.char('Tên Xe',size=100),
            'manufacturer':fields.char('Nhà Sản Xuất',size=100),
            'nums_seats':fields.integer('Số Chỗ Ngồi',size=100),
            'nums_cars':fields.integer('Số Lượng Xe',size=100),
            'car_id': fields.many2one('vt_tranform','Công Ty Vận Chuyển'),
            }
vt_car()

class vt_toursale (osv.osv):
    _name = 'vt_toursale'
    _description = 'Tour du lịch đang chạy'
    _columns = {
            'matour':fields.char('Mã Tour',size=64, readonly=True),
            'name':fields.char('Tên Tour',size=100),
            'tour_id':fields.many2one('vt_tour','Tour đang bán'),
			'ngaybatdau':fields.date('Ngày bắt đầu', required = "True"),
            'ngayketthuc':fields.date('Ngày kết thúc', required = "True"),
            'giokhoihanh':fields.datetime('Giờ khởi hành', readonly=True),
            'gioketthuc':fields.datetime('Giờ kết thúc', readonly=True),
            'diadiemkhoihanh':fields.char('Địa điểm tập trung',size=100),
			'ghichu': fields.text('Ghi chú'),
			'sokhachdangky': fields.integer('Số khách đăng ký', readonly=True),
            'songay': fields.integer('Số ngày', readonly=True),
            'list_toursale':fields.one2many('vt_order', 'matour', 'Tour sale list'),
            'trangthai': fields.selection([('modangky','Đang mở Tour cho khách hàng đăng ký')
                                        ,('ketthucdangky','Kết thúc đăng ký (Giai đoạn chuẩn bị cho khởi hành)')
                                        ,('khoihanh','Tour đang khởi hành')
                                        ,('ketthuc','Tour đã kết thúc')
                                        ],'Tình trạng tour',readonly=True)
            }
    def create(self,cr,uid,values,context):
        cr.execute('select max(id) from vt_toursale')
        id=cr.fetchone()[0]
    #    raise osv.except_osv((''),(str(str(id))))
        ma_moi='TS-'+str(id)
        values.update({'matour':str(ma_moi)})            
        return super(vt_toursale,self).create(cr,uid,values,context=context)
    def act_modangky(self,cr,uid,ids,context={}):
        self.write(cr,uid,ids,{'trangthai':'modangky'})
    def act_ketthucdangky(self,cr,uid,ids,context={}):
        self.write(cr,uid,ids,{'trangthai':'ketthucdangky'})
    def act_khoihanh(self,cr,uid,ids,context={}):
        self.write(cr,uid,ids,{'trangthai':'khoihanh'})
    def act_ketthuc(self,cr,uid,ids,context={}):
        self.write(cr,uid,ids,{'trangthai':'ketthuc'})
vt_toursale()

class vt_order (osv.osv):
    _name = 'vt_order'
    _description = 'Đặt Tour'
    _columns = {
            'order_id':fields.char('Mã Đơn Đặt Tour',size=100,readonly=True),
            'matour':fields.many2one('vt_toursale','Tour cấu hình'),
            'name':fields.char('Tên Tour',size=100),
            'nguoidaidien':fields.char('Họ tên người đặt vé',size=100,required="True"),
            'diachi':fields.char('Địa chỉ liên lạc',size=100),
            'dienthoai':fields.char('Số điện thoại',size=100),
            'cmnd':fields.char('Chứng minh nhân dân',size=100),
            'ngaygiodatve':fields.datetime('Thời gian đặt vé', size=100),
            'list_customer': fields.one2many('vt_customer','order_id', 'Customers List'),
            'tenphong':fields.char('Tên phòng',size=100),
            'trangthai': fields.selection([('chuathanhtoan','Chưa thanh toán')
                                        ,('dathanhtoan','Đã thanh toán')
                                        ,('quahan','Quá hạn thanh toán')
                                        ,('ketdatve','Kết đặt vé')
                                        ],'Tình trạng đặt vé',readonly=True)                          
            }
    #def func_updatetentour(self, cr, uid, ids, context = {}):
    #    ph = self.browse(cr, uid, values, context)[0].matour
    #    cr.execute("SELECT name FROM vt_toursale WHERE vt_toursale.name='%s' "%(ph))
    #    tentour=cr.fetchone()[0]
    #    raise osv.except_osv((''),(str(tentour)))
    def create(self,cr,uid,values,context):
        cr.execute('select max(id) from vt_order')
        id=cr.fetchone()[0]
    #    raise osv.except_osv((''),(str(str(id))))
        ma_moi='Order-'+str(id)
        values.update({'order_id':str(ma_moi)})
        
        #ph = self.browse(cr, uid, values, context)[0].matour
        #cr.execute("SELECT name FROM vt_toursale WHERE vt_toursale.name='%s' "%(ph))
        #tentour=cr.fetchone()[0]
        #raise osv.except_osv((''),(str(tentour)))              
        return super(vt_order,self).create(cr,uid,values,context=context)
    def act_chuathanhtoan(self,cr,uid,ids,context={}):
        self.write(cr,uid,ids,{'trangthai':'chuathanhtoan'})
    def act_dathanhtoan(self,cr,uid,ids,context={}):
        self.write(cr,uid,ids,{'trangthai':'dathanhtoan'})
    def act_quahan(self,cr,uid,ids,context={}):
        self.write(cr,uid,ids,{'trangthai':'ketdatve'})
    def act_ketdatve(self,cr,uid,ids,context={}):
#        self.write(cr,uid,ids,{'trangthai':'ketdatve'})
        cr.execute("""SELECT r.name
FROM vt_order o 
INNER JOIN vt_toursale ts ON o.matour = ts.id
INNER JOIN vt_tour t ON ts.tour_id = t.id
INNER JOIN vt_tour_hotel th ON th.tour_id = ts.tour_id
INNER JOIN vt_room r ON r.hotel_id = th.hotel_id
WHERE r.trangthai = 'controng' AND o.order_id = 'Order-5' limit 1""")
        a=cr.fetchone()
      # raise osv.except_osv((''),(str(a)))
        tenphong = str(a[0])
        cr.execute("update vt_room set trangthai = 'dathue' where name = '%s'"%(tenphong))
              
        #self.write(cr,uid,ids,{'tenphong': str(a[0])})
        self.write(cr,uid,ids,{'tenphong':tenphong})
        self.write(cr,uid,ids,{'trangthai':'ketdatve'})        
#    def compute_orders(self, cr, uid, ids, context=None):
vt_order()

class vt_customer (osv.osv):
    _name = 'vt_customer'
    _description = 'Khách Hàng'
    _columns = {
            'tenkhachhang':fields.char('Tên Khách Hàng',size=100,required="True"),
            'dienthoai':fields.char('Số điện thoại',size=100, required="True"),
            'birthday':fields.date('Ngày Sinh',required="True"),
            'diachi':fields.char('Địa chỉ liên lạc',size=100, required="True"),
            'cmnd':fields.char('Chứng minh nhân dân',size=100, required="True"),
            'order_id':fields.many2one('vt_order','Đơn Đặt Tour'),
            }
vt_customer()